package fr.afcepf.atod18.client.web;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

import fr.afcepf.atod18.client.entity.Client;
import fr.afcepf.atod18.client.service.ServiceClient;
import fr.afcepf.atod18.utilitaires.entity.Adresse;
import fr.afcepf.atod18.utilitaires.entity.Rue;
import fr.afcepf.atod18.utilitaires.entity.TypeAdresse;
import fr.afcepf.atod18.utilitaires.entity.Ville;
import fr.afcepf.atod18.utilitaires.service.ServiceUtilitaire;

@RequestScoped
@ManagedBean
public class ClientMB {
	@ManagedProperty(value="#{gestionClient}")
	private ServiceClient serviceClient;
	
	private String nom;
	private String prenom;
	private String loggin;
	private String mdp;
	private int ptsFidelite;
	private Boolean isLogged;
	private Set<Adresse> adresses;
	private Adresse adr;
	private List<Ville> listeVille;
	private List<Rue> listeRue;
	private int idVille;
	private int numeroRue;
	private Ville ville;
	private Rue rue;

	public int getNumeroRue() {
		return numeroRue;
	}

	public void setNumeroRue(int numeroRue) {
		this.numeroRue = numeroRue;
	}

	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	public String getPrenom() {
		return prenom;
	}

	public void setPrenom(String prenom) {
		this.prenom = prenom;
	}

	public String getLoggin() {
		return loggin;
	}

	public void setLoggin(String loggin) {
		this.loggin = loggin;
	}

	public String getMdp() {
		return mdp;
	}

	public void setMdp(String mdp) {
		this.mdp = mdp;
	}

	public int getPtsFidelite() {
		return ptsFidelite;
	}

	public void setPtsFidelite(int ptsFidelite) {
		this.ptsFidelite = ptsFidelite;
	}

	public Boolean getIsLogged() {
		return isLogged;
	}

	public void setIsLogged(Boolean isLogged) {
		this.isLogged = isLogged;
	}

	public Set<Adresse> getAdresses() {
		return adresses;
	}

	public void setAdresses(Set<Adresse> adresses) {
		this.adresses = adresses;
	}

	public List<Ville> getListeVille() {
		return listeVille;
	}

	public void setListeVille(List<Ville> listeVille) {
		this.listeVille = listeVille;
	}

	public List<Rue> getListeRue() {
		return listeRue;
	}

	public void setListeRue(List<Rue> listeRue) {
		this.listeRue = listeRue;
	}

	public Adresse getAdr() {
		return adr;
	}

	public void setAdr(Adresse adr) {
		this.adr = adr;
	}

	public int getIdVille() {
		return idVille;
	}

	public void setIdVille(int idVille) {
		this.idVille = idVille;
	}

	public ClientMB() {
     GenererListeVille();
     GenererListeRueSuivantVille();
		
	}

	public String ajouterClient() {
		
		adr = new Adresse();
		adr.setNumeroRue(numeroRue);
		adr.setVille(ville);
		adr.setTa(new TypeAdresse(1,"Facturation"));
		adr.setRue(rue);
		
		
		
		Client c = new Client(15);

		c.setLogged(true);
		c.setLogin(loggin);
		c.setPassword(mdp);
		c.setNom(nom);
		c.setPrenom(prenom);
		
		adresses.add(adr);
		
		

		serviceClient.ajoutClient(c);
		return null;

	}

	public String modifierClient() {
       
		
        		
		adresses.add(adr);
		Client u = rechercherClient(loggin);
		u.setLogged(true);
		u.setLogin(loggin);
		u.setPassword(mdp);
		u.setNom(nom);
		u.setPrenom(prenom);
	   

		serviceClient.modifierClient(u);

		return null;
	}

	private Client rechercherClient(String loggin) {

		Client c = new Client();

		c = serviceClient.chercherClient(loggin);

		return null;
	}

	public String annulerSaisie() {
		loggin = "";
		mdp = "";
		nom = "";
		prenom = "";

		return null;
	}

	
	public void GenererListeVille() {

		listeVille = ServiceUtilitaire.listerVille();

		for (Ville v : listeVille) {
			System.out.println(v.getNomVille());
		}

	}
	
	
	public void GenererListeRueSuivantVille(){
		
		listeRue = ServiceUtilitaire.listerRue(idVille);
		System.out.println(listeRue.size());
		for (Rue rue : listeRue) {
			System.out.println("clientMB rue recuperee"+rue.getNomRue());
		}
		
	}

}
